package top.zywork.controller;

import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;
import top.zywork.common.BeanUtils;
import top.zywork.dto.PagerDTO;
import top.zywork.query.GoodsInfoSkuPicQuery;
import top.zywork.service.GoodsInfoSkuPicService;
import top.zywork.vo.GoodsInfoSkuPicVO;
import top.zywork.vo.PagerVO;
import top.zywork.vo.ResponseStatusVO;

/**
 * GoodsInfoSkuPicController控制器类<br/>
 *
 * 创建于2019-07-12<br/>
 *
 * @author http://zywork.top 王振宇
 * @version 1.0
 */
@RestController
@RequestMapping("/goods-info-sku-pic")
@Slf4j
public class GoodsInfoSkuPicController extends BaseController {

    private GoodsInfoSkuPicService goodsInfoSkuPicService;

    @GetMapping("admin/multi/{id}")
    public ResponseStatusVO listById(@PathVariable("id") Long id) {
        PagerDTO pagerDTO = goodsInfoSkuPicService.listById(id);
        PagerVO pagerVO = BeanUtils.copy(pagerDTO, PagerVO.class);
        pagerVO.setRows(BeanUtils.copyList(pagerDTO.getRows(), GoodsInfoSkuPicVO.class));
        return ResponseStatusVO.ok("查询成功", pagerVO);
    }

    @GetMapping("admin/all")
    public ResponseStatusVO listAll() {
        PagerDTO pagerDTO = goodsInfoSkuPicService.listAll();
        PagerVO pagerVO = BeanUtils.copy(pagerDTO, PagerVO.class);
        pagerVO.setRows(BeanUtils.copyList(pagerDTO.getRows(), GoodsInfoSkuPicVO.class));
        return ResponseStatusVO.ok("查询成功", pagerVO);
    }

    @PostMapping("admin/all-cond")
    public ResponseStatusVO listAllByCondition(@RequestBody GoodsInfoSkuPicQuery goodsInfoSkuPicQuery) {
        PagerDTO pagerDTO = goodsInfoSkuPicService.listAllByCondition(goodsInfoSkuPicQuery);
        PagerVO pagerVO = BeanUtils.copy(pagerDTO, PagerVO.class);
        pagerVO.setRows(BeanUtils.copyList(pagerDTO.getRows(), GoodsInfoSkuPicVO.class));
        return ResponseStatusVO.ok("查询成功", pagerVO);
    }

    @PostMapping("admin/pager-cond")
    public ResponseStatusVO listPageByCondition(@RequestBody GoodsInfoSkuPicQuery goodsInfoSkuPicQuery) {
        PagerDTO pagerDTO = goodsInfoSkuPicService.listPageByCondition(goodsInfoSkuPicQuery);
        PagerVO pagerVO = BeanUtils.copy(pagerDTO, PagerVO.class);
        pagerVO.setRows(BeanUtils.copyList(pagerDTO.getRows(), GoodsInfoSkuPicVO.class));
        return ResponseStatusVO.ok("查询成功", pagerVO);
    }

    /**
     * 根据一级类目编号和相关查询条件获取商品的SKU信息，包含标题，价格，图片，销量等
     * @param categoryId
     * @param goodsInfoSkuPicQuery
     * @return
     */
    @PostMapping("any/goods-sku/{categoryId}")
    public ResponseStatusVO anyListPageByCondition(@PathVariable("categoryId") Long categoryId, @RequestBody GoodsInfoSkuPicQuery goodsInfoSkuPicQuery) {
        PagerDTO pagerDTO = goodsInfoSkuPicService.listGoodsSkuByCondition(categoryId, goodsInfoSkuPicQuery);
        PagerVO pagerVO = BeanUtils.copy(pagerDTO, PagerVO.class);
        pagerVO.setRows(BeanUtils.copyList(pagerDTO.getRows(), GoodsInfoSkuPicVO.class));
        return ResponseStatusVO.ok("查询成功", pagerVO);
    }

    /**
     * 根据关键词搜索条件获取商品的SKU信息，包含标题，价格，图片，销量等
     * @param goodsInfoSkuPicQuery
     * @return
     */
    @PostMapping("any/goods-sku/query")
    public ResponseStatusVO anyListAllPageByCondition(@RequestBody GoodsInfoSkuPicQuery goodsInfoSkuPicQuery) {
        PagerDTO pagerDTO = goodsInfoSkuPicService.listAllGoodsSkuByCondition(goodsInfoSkuPicQuery);
        PagerVO pagerVO = BeanUtils.copy(pagerDTO, PagerVO.class);
        pagerVO.setRows(BeanUtils.copyList(pagerDTO.getRows(), GoodsInfoSkuPicVO.class));
        return ResponseStatusVO.ok("查询成功", pagerVO);
    }

    /**
     * 根据查询条件获取热门商品的SKU信息，包含标题，价格，图片，销量等
     * @param goodsInfoSkuPicQuery
     * @return
     */
    @PostMapping("any/hot-goods-sku")
    public ResponseStatusVO anyListHotPageByCondition(@RequestBody GoodsInfoSkuPicQuery goodsInfoSkuPicQuery) {
        PagerDTO pagerDTO = goodsInfoSkuPicService.listHotGoodsSkuByCondition(goodsInfoSkuPicQuery);
        PagerVO pagerVO = BeanUtils.copy(pagerDTO, PagerVO.class);
        pagerVO.setRows(BeanUtils.copyList(pagerDTO.getRows(), GoodsInfoSkuPicVO.class));
        return ResponseStatusVO.ok("查询成功", pagerVO);
    }

    /**
     * 根据查询条件获取代理商品的SKU信息，包含标题，价格，图片，销量等
     * @param goodsInfoSkuPicQuery
     * @return
     */
    @PostMapping("any/agent-goods-sku")
    public ResponseStatusVO anyListAgentPageByCondition(@RequestBody GoodsInfoSkuPicQuery goodsInfoSkuPicQuery) {
        PagerDTO pagerDTO = goodsInfoSkuPicService.listAgentGoodsSkuByCondition(goodsInfoSkuPicQuery);
        PagerVO pagerVO = BeanUtils.copy(pagerDTO, PagerVO.class);
        pagerVO.setRows(BeanUtils.copyList(pagerDTO.getRows(), GoodsInfoSkuPicVO.class));
        return ResponseStatusVO.ok("查询成功", pagerVO);
    }

    /**
     * 根据三级类目编号和相关查询条件获取商品的SKU信息，包含标题，价格，图片，销量等
     * @param categoryId
     * @param goodsInfoSkuPicQuery
     * @return
     */
    @PostMapping("any/category-goods-sku/{categoryId}")
    public ResponseStatusVO anyCategoryListPageByCondition(@PathVariable("categoryId") Long categoryId, @RequestBody GoodsInfoSkuPicQuery goodsInfoSkuPicQuery) {
        PagerDTO pagerDTO = goodsInfoSkuPicService.listCategoryGoodsSkuByCondition(categoryId, goodsInfoSkuPicQuery);
        PagerVO pagerVO = BeanUtils.copy(pagerDTO, PagerVO.class);
        pagerVO.setRows(BeanUtils.copyList(pagerDTO.getRows(), GoodsInfoSkuPicVO.class));
        return ResponseStatusVO.ok("查询成功", pagerVO);
    }

    @Autowired
    public void setGoodsInfoSkuPicService(GoodsInfoSkuPicService goodsInfoSkuPicService) {
        this.goodsInfoSkuPicService = goodsInfoSkuPicService;
    }
}
